Let's Encrypt
是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。
简单的说,借助 Let's Encrypt
颁发的证书可以为我们的网站免费启用 HTTPS(SSL/TLS) 。
我这里直接使用第三方客户端 acme.sh
申请,官方推荐 Certbot
客户端来签发证书,在尝试了 Certbot
和 acme.sh
后,推荐使用 acme.sh
。
安装acme
1
| curl https://get.acme.sh | sh
|
获取证书
acme.sh
实现了 acme
协议支持的所有验证协议. 一般有两种方式验证: http
和 dns
验证,如若允许建议使用 dns
验证,http
验证在此不再赘述,如有需要点击传送门。dns
验证强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录了,我的域名是在阿里注册的,下面给出阿里云解析的例子,其他地方注册的请参考这里自行修改: 传送门
请先前往阿里云后台获取 App_Key
跟 App_Secret
传送门
设置 key
1 2 3
| # 替换成从阿里云后台获取的密钥 export Ali_Key="Ali_Key" export Ali_Secret="Ali_Secret"
|
获取证书
1 2 3 4 5
| # 泛域名获取 # 泛域名获取时,根域名(wurenstudio.cn)如果也想使用泛域名证书的话,则必须获取根域名证书,如下 acme.sh --issue --dns dns_ali -d wurenstudio.cn -d *.wurenstudio.cn # 单域名获取 acme.sh --issue --dns dns_ali -d wurenstudio.cn
|
第一次获取证书会进行dns验证,期间需要等待20s,等待后则可生成成功。
配置证书
证书文件介绍:
1 2 3 4
| .key 是证书私钥文件 .pem 是证书文件 Nginx 服务器,在阿里云证书中与.crt文件一样 .crt 是证书文件 Apache 服务器 _public.crt(证书)_chain.crt(证书链或中间证书) .pfx 一般适合Tomcat/IIS服务器,暂不介绍
|
参考地址:https://help.aliyun.com/knowledge_detail/95505.html?spm=5176.2020520163.cas.26.1d32VlfJVlfJ5b
Nginx/Tengine 服务器
打开Nginx
安装目录下conf
目录下的nginx.conf
文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #以下属性中ssl开头的属性与证书配置有直接关系 #其它属性请结合自己的实际情况复制或调整 server { listen 443; server_name localhost; ssl on; root html; index index.html index.htm; # 证书公钥配置 ssl_certificate cert/fullchain.pem; # 证书私钥配置 ssl_certificate_key cert/privkey.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
|
Apache 服务器
打开apache
安装目录下conf
目录中的httpd.conf
文件,找到以下内容去掉注释:
1 2 3
| LoadModule ssl_module modules/mod_ssl.so #(如果找不到请确认是否编译过 openssl 插件) Include conf/extra/httpd-ssl.conf
|
打开apache
安装目录下conf.d/ssl.conf
,在配置文件中查找以下配置语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 添加 SSL 协议支持协议,去掉不安全的协议 SSLProtocol all -SSLv2 -SSLv3 # 修改加密套件如下 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM SSLHonorCipherOrder on # 证书公钥配置 SSLCertificateFile cert/fullchain.crt # 证书私钥配置 SSLCertificateKeyFile cert/privkey.key # 证书链配置 SSLCertificateChainFile cert/chain.crt
### 或者以下文件格式 SSLCertificateFile cert/fullchain.pem SSLCertificateKeyFile cert/privkey.pem SSLCertificateChainFile cert/chain.pem
|
PS:配置完成后都需要重启相关服务
自动续期
目前 Let's Encrypt
的证书有效期是 90 天,到期时 acme.sh
会自动续期,安装时就已经创建了 crontab
定时任务,无需任何操作。
也可以强制续签证书:
1
| acme.sh --renew -d example.com --force
|
全文完。